home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / asm / e820.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-10-24  |  2.0 KB  |  64 lines

  1. #ifndef __ASM_E820_H
  2. #define __ASM_E820_H
  3. #define E820MAP    0x2d0        /* our map */
  4. #define E820MAX    128        /* number of entries in E820MAP */
  5.  
  6. /*
  7.  * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the
  8.  * constrained space in the zeropage.  If we have more nodes than
  9.  * that, and if we've booted off EFI firmware, then the EFI tables
  10.  * passed us from the EFI firmware can list more nodes.  Size our
  11.  * internal memory map tables to have room for these additional
  12.  * nodes, based on up to three entries per node for which the
  13.  * kernel was built: MAX_NUMNODES == (1 << CONFIG_NODES_SHIFT),
  14.  * plus E820MAX, allowing space for the possible duplicate E820
  15.  * entries that might need room in the same arrays, prior to the
  16.  * call to sanitize_e820_map() to remove duplicates.  The allowance
  17.  * of three memory map entries per node is "enough" entries for
  18.  * the initial hardware platform motivating this mechanism to make
  19.  * use of additional EFI map entries.  Future platforms may want
  20.  * to allow more than three entries per node or otherwise refine
  21.  * this size.
  22.  */
  23.  
  24. /*
  25.  * Odd: 'make headers_check' complains about numa.h if I try
  26.  * to collapse the next two #ifdef lines to a single line:
  27.  *    #if defined(__KERNEL__) && defined(CONFIG_EFI)
  28.  */
  29. #define E820_X_MAX E820MAX
  30.  
  31. #define E820NR    0x1e8        /* # entries in E820MAP */
  32.  
  33. #define E820_RAM    1
  34. #define E820_RESERVED    2
  35. #define E820_ACPI    3
  36. #define E820_NVS    4
  37.  
  38. /* reserved RAM used by kernel itself */
  39. #define E820_RESERVED_KERN        128
  40.  
  41. #ifndef __ASSEMBLY__
  42. struct e820entry {
  43.     __u64 addr;    /* start of memory segment */
  44.     __u64 size;    /* size of memory segment */
  45.     __u32 type;    /* type of memory segment */
  46. } __attribute__((packed));
  47.  
  48. struct e820map {
  49.     __u32 nr_map;
  50.     struct e820entry map[E820_X_MAX];
  51. };
  52.  
  53. #endif /* __ASSEMBLY__ */
  54.  
  55. #define ISA_START_ADDRESS    0xa0000
  56. #define ISA_END_ADDRESS        0x100000
  57. #define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS)
  58.  
  59. #define BIOS_BEGIN        0x000a0000
  60. #define BIOS_END        0x00100000
  61.  
  62.  
  63. #endif  /* __ASM_E820_H */
  64.